bl2-el3: Fix bl32 lr_svc used for bl33 entry address
authorLionel Debieve <[email protected]>
Mon, 5 Mar 2018 14:21:59 +0000 (15:21 +0100)
committerLionel Debieve <[email protected]>
Mon, 5 Mar 2018 16:34:25 +0000 (17:34 +0100)
When using BL2_EL3, we need to ensure that lr_svc is
properly given to bl32 as it was previously made by bl1.

Fixes ARM-Software/tf-issues#562

Signed-off-by: Lionel Debieve <[email protected]>
bl2/aarch32/bl2_el3_entrypoint.S

index 997b069cdfdd710497c533d287d85f06ed1f931f..0c7b064555a47c8eee6575fe85e87e5900deab4e 100644 (file)
@@ -78,6 +78,11 @@ func bl2_run_next_image
        ldr     r1, [r8, #(ENTRY_POINT_INFO_PC_OFFSET + 4)]
        msr     spsr, r1
 
+       /* Some BL32 stages expect lr_svc to provide the BL33 entry address */
+       cps     #MODE32_svc
+       ldr     lr, [r8, #ENTRY_POINT_INFO_LR_SVC_OFFSET]
+       cps     #MODE32_mon
+
        add     r8, r8, #ENTRY_POINT_INFO_ARGS_OFFSET
        ldm     r8, {r0, r1, r2, r3}
        eret